<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <property name="LOGS" value="./logs" />

  <timestamp key="myTimestamp" datePattern="yyyy-MM-dd"/>

  <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>
        %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
      </Pattern>
    </layout>
  </appender>

  <!-- DEV -->
  <springProfile name="dev">

    <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>${LOGS}/poc-dev-${myTimestamp}.log</file>
      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
      </encoder>

      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily and when the file reaches 10 MegaBytes -->
        <fileNamePattern>${LOGS}/archived/poc-dev-%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
          <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
      </rollingPolicy>
    </appender>

    <!-- LOG "com.example*" at DEBUG level -->
    <logger name="com.example" level="debug" additivity="false">
      <appender-ref ref="RollingFile" />
      <appender-ref ref="Console" />
    </logger>

  </springProfile>

  <!-- TEST -->
  <springProfile name="test">

    <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>${LOGS}/poc-test-${myTimestamp}.log</file>
      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
      </encoder>

      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily and when the file reaches 10 MegaBytes -->
        <fileNamePattern>${LOGS}/archived/poc-test-%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
          <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
      </rollingPolicy>
    </appender>

    <!-- LOG "com.example*" at INFO level -->
    <logger name="com.example" level="info" additivity="false">
      <appender-ref ref="RollingFile" />
      <appender-ref ref="Console" />
    </logger>

  </springProfile>

  <!-- PROD -->
  <springProfile name="prod">

    <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>${LOGS}/poc-prod-${myTimestamp}.log</file>
      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
      </encoder>

      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily and when the file reaches 10 MegaBytes -->
        <fileNamePattern>${LOGS}/archived/poc-prod-%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
          <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
      </rollingPolicy>
    </appender>

    <!-- LOG "com.example*" at WARN level -->
    <logger name="com.example" level="warn" additivity="false">
      <appender-ref ref="RollingFile" />
      <appender-ref ref="Console" />
    </logger>

  </springProfile>

  <!-- LOG everything at INFO level -->
  <root level="info">
    <appender-ref ref="RollingFile" />
    <appender-ref ref="Console" />
  </root>

</configuration>
